package com.pac.questionnaire.service;

import java.util.List;
import java.util.Map;

import org.springframework.web.multipart.MultipartFile;

import com.common.annotation.PageSeparate;
import com.pac.questionnaire.bean.QuestionnaireDiagnosisBean;

/**
 * 问卷回答Service接口
 * 
 * @author lujun.chen
 * @version [版本号, 2015年3月9日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface QuestionnaireDiagnosisService {

	/**
	 * 添加问卷诊断记录
	 * 
	 * @param questionnaireDiagnosisBean
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public String addQuestionnaireDiagnosis(
			QuestionnaireDiagnosisBean questionnaireDiagnosisBean);

	/**
	 * 更新问卷诊断
	 * 
	 * @param questionnaireDiagnosisBean
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public boolean updateQuestionnaireDiagnosis(
			QuestionnaireDiagnosisBean questionnaireDiagnosisBean);

	/**
	 * 删除问卷诊断
	 * 
	 * @param questionnaireDiagnosisBean
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public boolean delQuestionnaireDiagnosis(
			QuestionnaireDiagnosisBean questionnaireDiagnosisBean);

	/**
	 * 列表查询问卷答卷
	 * 
	 * @param questionnaireDiagnosisBean
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	@PageSeparate
	public List<QuestionnaireDiagnosisBean> queryQuestionnaireDiagnosis(
			QuestionnaireDiagnosisBean questionnaireDiagnosisBean);

	/**
	 * 查询单调问卷答卷记录
	 * 
	 * @param questionnaireDiagnosisBean
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public QuestionnaireDiagnosisBean findQuestionnaireDiagnosis(
			QuestionnaireDiagnosisBean questionnaireDiagnosisBean);

	/**
	 * 回答问卷
	 * 
	 * @param openid
	 *            微信openId
	 * @param questionnaireId
	 *            问卷ID
	 * @param answers
	 *            用户回答
	 * @param filesMap
	 *            回答问卷时同时上传的文件
	 * @param param
	 *            其他参数
	 * @return map
	 * 
	 *         answerId :答卷ID
	 * 
	 *         diagnosis：自动诊断
	 * 
	 * @see [类、类#方法、类#成员]
	 */
	public Map<String, String> answerQuestionnaire(String openId,
			String questionnaireId, Map<String, Object[]> answers,
			Map<String, List<MultipartFile>> filesMap, Map<String, String> param);

	/**
	 * 医生针对问卷诊断
	 * 
	 * @param diagnosisBean
	 *            诊断
	 * @return map
	 * 
	 *         openId:微信openId
	 * 
	 *         content：医生给微信用户发送的诊断内容
	 * 
	 * @see [类、类#方法、类#成员]
	 */
	public Map<String, String> questionnaireDiagnosis(
			QuestionnaireDiagnosisBean diagnosisBean);

	/**
	 * 检查用户是否已经回答过当前选择的医生的这个问题
	 * 
	 * @param openId
	 *            微信用户openId
	 * @param questionnaireId
	 *            问卷ID
	 * @return
	 * 
	 *         true 已经回答过
	 * 
	 *         false 未回答过
	 * 
	 * @see [类、类#方法、类#成员]
	 */
	public boolean questionnairedIsAnswered(String openId,
			String questionnaireId);

	/**
	 * 添加答卷附件
	 * 
	 * @param files
	 *            文件
	 * @param diagnosisId
	 *            答卷ID
	 * @param openid
	 *            微信openid
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public boolean addQuestionnaireFile(MultipartFile[] files,
			String diagnosisId, String openid);

}
